require('dotenv').config();
const { Sequelize } = require('sequelize');

// 数据库连接配置（从环境变量读取）
const sequelize = new Sequelize(
  process.env.DB_NAME,      // 数据库名称
  process.env.DB_USER,      // 用户名
  process.env.DB_PASSWORD,  // 密码
  {
    host: process.env.DB_HOST,    // 数据库主机
    port: process.env.DB_PORT,    // 端口
    dialect: 'mysql',             // 数据库类型
    timezone: '+08:00',          // 时区设置（中国时区）
    logging: process.env.NODE_ENV === 'development' ? console.log : false, // 开发环境显示SQL日志
    
    pool: {  // 连接池配置
      max: 10,       // 最大连接数
      min: 0,        // 最小连接数
      acquire: 30000,// 获取连接超时时间（毫秒）
      idle: 10000    // 连接空闲时间（毫秒）
    },
    
    define: {  // 全局模型定义
      timestamps: true,        // 自动添加 createdAt 和 updatedAt 字段
      paranoid: true,          // 开启软删除（添加 deletedAt 字段）
      underscored: true,       // 使用下划线命名风格
      freezeTableName: true    // 禁止复数表名
    }
  }
);

// 测试数据库连接
async function testConnection() {
  try {
    await sequelize.authenticate();
    console.log('✅ 数据库连接成功');
    
    // 根据环境同步模型
    if (process.env.NODE_ENV === 'development') {
      await sequelize.sync({ alter: true });  // 开发环境自动同步
      console.log('🔄 数据库模型已同步');
    }
  } catch (error) {
    console.error('❌ 数据库连接失败:', error);
    process.exit(1); // 退出进程
  }
}

testConnection();

module.exports = { sequelize };